Implementing a functioning management which is non-intrusive and transparent regarding the managed application is very useful, in particular for enabling the use the numerous existing applications with more flexibility, or reliability, or performance, in their original state (“legacy applications”).
Non-intrusive functioning management techniques by intermediate capture and by restoration of the state of an application on a synchronisation point or restart point (“checkpoint”) have already been proposed by the same applicants in patent application FR 04 07180. In a complementary manner, non-intrusive logging and replay techniques have already been proposed by the same applicants, in particular in patent applications FR 05 00605 to FR 05 00613.
However, the logging of one or more events still represents a work overhead for the logged application or the system which executes it, and minimising it as far as possible is very interesting.
Among the events constituting the execution of an application, those which have a non-deterministic behaviour vis-à-vis the state of the application must be logged and replayed by storing their result in the logging data, for enabling a forcing or reinjecting of this result during a later replay. It is therefore of interest to reduce as far as possible the number of events which must be treated as non-deterministic.
Events external to the application, or to the system which is executing it, often have a behaviour which is intrinsically non-deterministic, and must in general be stored, for example as described in the applications cited earlier.
Internal events, by comparison, most frequently have a deterministic behaviour and also constitute the majority of operations executed in the running of an application. It is therefore of interest to aggregate and optimise the logging of non-deterministic events, in particular internal.
If all the events from a portion of the running are deterministic, all this portion can be logged in an economic manner simply by storing the start state of the application, for example in the form of a restart point. The replay is then obtained, for example, by restoring the application into the restart point state as stored, and by launching the execution of these deterministic events. The term “piecewise deterministic execution model”, comprising a grouping of deterministic portions composed only of deterministic events can then be used. The boundaries of deterministic portions are thus in general constituted by non-deterministic events, for example an arrival of an external message at the beginning and another non-deterministic event for the end.